<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Array and Object</title>
	</head>
	<body>
		
	</body>
	<script type="text/javascript">/**
 * 
 * Object 
 * var obj=new Object();
 * var obj={};字面量表示
 *		var obj={"first name":"Tom"};
 *  注意：对于非数字非字母的属性来说，要要通过就[]来访问的
 * */
/**
 * Array
 * var arr=new Array(30);
 * var arr=new Array["red","blue"];
 * var arr=["blue","red"];//字面量表示
 * arr.length是可读可写
 * eg:
 * var arr=[2];
 * arr[5]="blue";//会自动的增加length到5+1=6的长度
 * 注意：每次对数组执行完操作后，会自动重新计算长度
 * 
 * Array转化String
 * arr.toString()
 * arr.valuof()
 * arr.toLocaleString()
 * 前3个都是用，分割，而join则可自定义分隔符
 * arr.join(str);//默认是 ，分割
 * 
 * 栈方法操作Array
 * arr.push() param:(s1,s2,s3,...)
 * arr.pop()
 * 
 * 队列方法操作Array(先进)
 * arr.push();
 * arr.shift();
 * arr.unshift() param:(s1,s2,...)数组最前面添加n个元素   return:返回新数组的长度
 * 
 * eg:
 * var arr=[2];
	arr[5]="blue";
	console.log(arr.toString());//返回字符串，每一项，隔开
	console.log(arr.valueOf());//返回数组
	console.log(arr.toLocaleString());// 返回字符串
	其中：对于toString()和toLocaleString()
	他们只是分别调用数组中的每一项的toString()和toLocaleString()
	eg:
		function person(name){
			this.name=name;
			this.toLocaleString= function() {
				return this.name+":self";
			},
			this.toString=function(){
				return this.name;
			}	
		}	
		
	var p1=new person("Tom");
	var p2=new person("Bill");
	var arr=[p1,p2];
	console.log(arr.toString());//返回字符串，每一项，隔开
	console.log(arr.valueOf());//返回数组
	console.log(arr.toLocaleString());// 返回字符串
	
*
* 
* Array排序方法
* arr.reverse(); return: 翻转该arr，并且返回该arr
* arr.sort(); //默认按照每个数组项的字符大小排序
* arr.sort(); param:比较函数：按照返回的<0,>0,=0判断排序先后顺序
* eg.
* arr.sort(com);//
* function com(a,b){
*		if(a>b){
*			return -1;
*		}else if(a<b){
*			return 1;
*		}else{
*			return 0;
*		}
*	}
* 
* Array合并方法
* arr.concat(); param:(...)将任意项合并     return:一个新的数组,原数组仍存在。
* console.log(Array.prototype.concat(arr,arr2,arr1,11111,"222",{a:2,b:1}));//[......]
* 
* 
* Array.prototype.slice() param:(beginIndex,endIndex) return:返回删除的数组项;
* eg:
* console.log(arr.slice(1,3));
* 
* Array.prototype.splice();
* 删除：
* var arr=["banana","pen","apple"];
* console.log(arr.concat().splice(1,2));//pen,apple
* 插入：（从第一个参数指定的位置开始插入）
* var arr=["banana","pen","apple"];
* //arr.splice(1,0,"grapes","strawberry");
*  //console.log(arr);//banana,grapes,strawberry,pen,apple
* 替换：
* var arr=["banana","pen","apple"];
* arr.splice(1,1,"lemon");
* console.log(arr);//banana,lemon,apple
* 
* 
* Array的位置方法
* Array.prototype.indexOf() param:查找的内容,
* 从数组开头开始查找指定项
* Array.prototype.lastIndexOf()从数组的结尾开始查找指定项
*
* 
* 数组迭代方法
* Array.prototype.every()//对于给定条件，数组每一项都返回true,则返会true，（第一个false便停止循环了）
* Array.prototype.some()//对于给定条件，数组某一项返回true,则返会true，（第一个true便停止循环了）
* Array.prototype.filter()//对于给定条件，过滤掉结果为false的数组项,返回结果为true的数据项
* Array.prototype.forEach()//仅仅是遍历数组中的每一项，
* Array.prototype.map()//对于数组中的每一项，返回组成额结果集
*   var arr=[1,2,3,4,5,6,7,8,9,2,1];
*	var everyResult=arr.every(function(item,index,array){
*		return item>2;
*	})
*	console.log(everyResult);//false
*	var someResult=arr.some(function(item,index,array){
*		return item>2;
*	})
*	console.log(someResult);//true
*	var mapResult=arr.map(function(item,index,array){
*		return item>2;
*	})
*	console.log(mapResult);[false,false,true,true,...]
*	var eachResult=arr.forEach(function(item,index,array){
*		console.log("item:"+item);
*		return item>2;
*	})
*	console.log(eachResult);//undefined
*	var filterResult=arr.filter(function(item,index,array){
*		return item>2;
*	})
*	console.log(filterResult);//[3,4,5,6,7,8,9]
* 
 * */
	//var arr=["banana","pen","apple"];
	var arr=[1,2,3,4,5,6,7,8,9,2,1];
	
	</script>
</html>
